package com.gengzp.system.service;

import com.gengzp.common.model.permission.req.AllocatePageReq;
import com.gengzp.common.model.permission.req.AllocatePermissionReq;
import com.gengzp.common.model.permission.req.AllocateRoleReq;
import com.gengzp.common.model.permission.resp.SearchConsolePageResp;
import com.gengzp.common.model.permission.resp.SearchPermissionsResp;

import java.util.List;

/**
 * @ClassName PermissionService
 * @Description 权限管理服务层接口
 * @Author gengzp
 * @Date 2025/9/15 15:43
 */
public interface PermissionService {

    /**
     * 查询所有权限
     *
     * @return 权限查询返回实体, 树结构
     */
    SearchPermissionsResp searchAllPermissions();

    /**
     * 查询所有控制台页面
     *
     * @return 控制台页面集合
     */
    List<SearchConsolePageResp> searchAllConsolePages();

    /**
     * 刷新角色权限的缓存信息
     */
    void refreshRoleCache();

    /**
     * 为角色分配权限, 该方法会覆盖角色现有的权限
     *
     * @param req 分配权限请求实体
     */
    void allocatePermissions(AllocatePermissionReq req);

    /**
     * 为角色分配页面权限, 该方法会覆盖角色现有的页面权限
     *
     * @param req 分配页面权限请求实体
     */
    void allocatePages(AllocatePageReq req);

    /**
     * 为用户分配角色, 该方法会覆盖用户现有的角色
     *
     * @param req 分配角色请求实体
     */
    void allocateRoles(AllocateRoleReq req);

}
